﻿//using UnityEngine;

//namespace Core.Frame
//{
//    public partial class FrameSystem
//    {
//        public enum EFrame
//        {
//            F_1,
//            F_5,
//            F_10,
//            F_30,
//        }

//        public class FrameRate
//        {
//            public EFrame Type { get; private set; }

//            public float deltaTime { get; private set; }

//            private float m_interval;
//            private float m_last_time = 0;
//            private FrameSystem Mgr;

//            public FrameRate(EFrame frame, FrameSystem mgr)
//            {

//                Type = frame;
//                m_interval = 1.0f / (int)frame;
//                Mgr = mgr;
//            }

//            public void Update()
//            {
//                if (m_last_time == 0)
//                {
//                    m_last_time = Time.time;
//                }

//                deltaTime = Time.time - m_last_time;
//                if (deltaTime < m_interval)
//                {
//                    return;
//                }
//                OnUpdateEvt();
//                m_last_time = Time.time;
//            }

//            public void AfterUpdate()
//            {

//                if (deltaTime < m_interval)
//                {
//                    return;
//                }
//                OnAfterUpdateEvt();
//            }

//            private void OnUpdateEvt()
//            {
//                switch (Type)
//                {
//                    case EFrame.F_30:
//                        Mgr.onUpdate30?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_10:
//                        Mgr.onUpdate10?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_5:
//                        Mgr.onUpdate5?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_1:
//                        Mgr.onUpdate1?.Invoke(deltaTime);
//                        break;
//                }
//            }


//            private void OnAfterUpdateEvt()
//            {
//                switch (Type)
//                {
//                    case EFrame.F_30:
//                        Mgr.onAfterUpdate30?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_10:
//                        Mgr.onAfterUpdate10?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_5:
//                        Mgr.onAfterUpdate5?.Invoke(deltaTime);
//                        break;
//                    case EFrame.F_1:
//                        Mgr.onAfterUpdate1?.Invoke(deltaTime);
//                        break;
//                }
//            }
//        }
//    }
//}

